package com.ssm.promotion.core.entity;

import java.util.Date;

/**
 * Create by whk0710 on 2/18/2019
 * DLBPData的输入数据类型主要有三种：
 *     1）int型，分为机器人总数、种群数目等等，1
 *     2）double型，分为交叉率、变异率等等，1
 *     3）int[][]，用于保存机器人任务执行时间矩阵，1
 *     4）int[]，用于保存资源占用数目，1
 *     5）double[]，用于保存每个机器人的能耗矩阵，1
 *     6）保存TAOG矩阵单独创建一个类(实际上，Product单独创建一个类，有一个字段关联DLBPData的id
 *          在初始化时，直接按DLBPData的id查找所有符合条件的对象)
 * */
public class DLBPData implements java.io.Serializable{

    private String id;          //主键

    private int pop_size;       //种群数目
    private int product_num;    //产品数目
    private int itr_num;        //迭代次数
    private int robot_num;      //机器人总数目
    private int robot_max;      //单个站允许最大机器人数目
    private int wstation_num;   //工作站总数
    private int resource_max;   //资源约束最大值

    private boolean is_ResCons; //是否需要资源约束

    private double crossover_rate;   //交叉率
    private double[] OEC;       //能耗矩阵，大小为机器人数

    private int[] resource_i;     //任务所占用的资源数
    private int[][] process_time; //机器人对每个任务的执行时间

    /**
     * the succeeding B nodes of each Artificial nodes(except the first A node), the first line is B
     *  nodes,second line is A nodes
     * */
    private int[][] SA;
    /**
     * the predecessors of  each Artificial nodes, the first line is A nodes,second line is  B nodes
     */
    private int[][] PA;

    private Date config_date;   //创建日期

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getPop_size() {
        return pop_size;
    }

    public void setPop_size(int pop_size) {
        this.pop_size = pop_size;
    }

    public int getProduct_num() {
        return product_num;
    }

    public void setProduct_num(int product_num) {
        this.product_num = product_num;
    }

    public int getItr_num() {
        return itr_num;
    }

    public void setItr_num(int itr_num) {
        this.itr_num = itr_num;
    }

    public int getRobot_num() {
        return robot_num;
    }

    public void setRobot_num(int robot_num) {
        this.robot_num = robot_num;
    }

    public int getRobot_max() {
        return robot_max;
    }

    public void setRobot_max(int robot_max) {
        this.robot_max = robot_max;
    }

    public int getWstation_num() {
        return wstation_num;
    }

    public void setWstation_num(int wstation_num) {
        this.wstation_num = wstation_num;
    }

    public int getResource_max() {
        return resource_max;
    }

    public void setResource_max(int resource_max) {
        this.resource_max = resource_max;
    }

    public boolean isIs_ResCons() {
        return is_ResCons;
    }

    public void setIs_ResCons(boolean is_ResCons) {
        this.is_ResCons = is_ResCons;
    }

    public double getCrossover_rate() {
        return crossover_rate;
    }

    public void setCrossover_rate(double crossover_rate) {
        this.crossover_rate = crossover_rate;
    }

    public double[] getOEC() {
        return OEC;
    }

    public void setOEC(double[] OEC) {
        this.OEC = OEC;
    }

    public int[] getResource_i() {
        return resource_i;
    }

    public void setResource_i(int[] resource_i) {
        this.resource_i = resource_i;
    }

    public int[][] getProcess_time() {
        return process_time;
    }

    public void setProcess_time(int[][] process_time) {
        this.process_time = process_time;
    }

    public int[][] getSA() {
        return SA;
    }

    public void setSA(int[][] SA) {
        this.SA = SA;
    }

    public int[][] getPA() {
        return PA;
    }

    public void setPA(int[][] PA) {
        this.PA = PA;
    }

    public Date getConfig_date() {
        return config_date;
    }

    public void setConfig_date(Date config_date) {
        this.config_date = config_date;
    }

}
